/*
 * Punto.h
 *
 *  Created on: 10/10/2009
 *      Author: ale
 */

#ifndef PUNTO_H_
#define PUNTO_H_
#include <iostream>
class Punto {

private:
	float coordenada[3];

public:
	Punto(float x=0.0, float y=0.0, float z=0.0);
	Punto(const Punto&);
	float operator[](int i);
	Punto& operator=(const Punto& otro);
	bool operator==(const Punto& otro);
	Punto operator-(const Punto& otro);
	virtual ~Punto();
	float x() const;
	float y() const;
	float z() const;
	void x(float newX);
	void y( float newY);
	void z( float newZ);
	void setXYZ(float x=0.0, float y=0.0, float z=0.0);
	friend std::ostream&  operator<<(std::ostream& out, const Punto& punto);

	/* Los siguientes metodos toman el punto como si fuese un vector */
	Punto productoVectorial(const Punto& p);
	float anguloCon(const Punto&p);
	float modulo() const;

};

#endif /* PUNTO_H_ */
